package es.cmesa.agui;

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.text.TabExpander;
import javax.swing.JButton;
import javax.swing.JScrollPane;

import es.cmesa.cnegocios.Produto;
import es.cmesa.dcontroladores.ControladorMesa;
import es.cmesa.dcontroladores.ControladorProduto;
import es.cmesa.fexcecoes.SemProdutosException;
import java.awt.Font;

public class ListarSugestao extends JInternalFrame {

	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	
	private DefaultTableModel modelo_1;
	private DefaultTableModel modelo_2;
	
	private JButton btnPedir;	
	private JButton btnFechar;
	
	private JScrollPane scrollPane_1;
	private JTable table_1;
	
	private JScrollPane scrollPane_2;
	private JTable table_2;
	
	static int numeroMesa;
	static String cpf;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					ListarSugestao frame = new ListarSugestao(cpf, numeroMesa);
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 * @throws SemProdutosException 
	 */
	public ListarSugestao(String cpf, int numeroMesa) throws SemProdutosException {
		this.cpf = cpf;
		this.numeroMesa = numeroMesa;
		
		setTitle("Pedidos De Clientes");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(0, 0, 580, 411);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		setClosable(true);
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		
		btnPedir = new JButton("Pedir");
		btnPedir.setBounds(465, 343, 89, 23);
		contentPane.add(btnPedir);
		
		btnFechar = new JButton("Fechar");
		btnFechar.setBounds(366, 343, 89, 23);
		contentPane.add(btnFechar);
		
		scrollPane_1 = new JScrollPane();
		scrollPane_1.setBounds(10, 51, 543, 113);
		contentPane.add(scrollPane_1);
		
		table_1 = new JTable();
		table_1.setRowSelectionAllowed(false);
		scrollPane_1.setViewportView(table_1);
		
		table_1.setAutoResizeMode(0);
		
		table_1.setModel(new DefaultTableModel(
				new Object[][] {
				},
				new String[] {
					"Id", "Tipo", "", "Nome", "Descri\u00E7\u00E3o", "pre\u00E7o"
				}
			) {
				Class[] columnTypes = new Class[] {
					Integer.class, String.class, Boolean.class, String.class, String.class, String.class
				};
				public Class getColumnClass(int columnIndex) {
					return columnTypes[columnIndex];
				}
				boolean[] columnEditables = new boolean[] {
					false, false, true, false, false, false
				};
				public boolean isCellEditable(int row, int column) {
					return columnEditables[column];
				}
			});
		table_1.getColumnModel().getColumn(0).setPreferredWidth(44);
		table_1.getColumnModel().getColumn(2).setPreferredWidth(24);
		table_1.getColumnModel().getColumn(3).setPreferredWidth(204);
		table_1.getColumnModel().getColumn(4).setPreferredWidth(193);
		table_1.getColumnModel().getColumn(5).setPreferredWidth(67);
		
		ControladorProduto controlador_1 = new ControladorProduto();
		java.util.List<Produto> lista_1 = controlador_1.listar();
		
		modelo_1 = (DefaultTableModel) table_1.getModel();
		
		for(Produto pro_1 : lista_1){
			Object[] linha = new Object[] { pro_1.getTipo(), pro_1.getNome(), pro_1.getId(), pro_1.getPreco(), pro_1.getDescricao() };
			if(pro_1.getTipo().equals("formula para pegar")) modelo_1.addRow(linha);
		}
		
		scrollPane_2 = new JScrollPane();
		scrollPane_2.setBounds(10, 219, 543, 113);
		contentPane.add(scrollPane_2);
		
		table_2 = new JTable();
		table_2.setRowSelectionAllowed(false);
		scrollPane_2.setViewportView(table_2);
		
		table_2.setAutoResizeMode(0);
		
		table_2.setModel(new DefaultTableModel(
				new Object[][] {
				},
				new String[] {
					"Id", "Tipo", "", "Nome", "Descri\u00E7\u00E3o", "pre\u00E7o"
				}
			) {
				Class[] columnTypes = new Class[] {
					Integer.class, String.class, Boolean.class, String.class, String.class, String.class
				};
				public Class getColumnClass(int columnIndex) {
					return columnTypes[columnIndex];
				}
				boolean[] columnEditables = new boolean[] {
					false, false, true, false, false, false
				};
				public boolean isCellEditable(int row, int column) {
					return columnEditables[column];
				}
			});
		
		JLabel lblMaisfeitos = new JLabel("Pedidos mais feitos");
		lblMaisfeitos.setFont(new Font("Tahoma", Font.PLAIN, 20));
		lblMaisfeitos.setBounds(10, 11, 184, 29);
		contentPane.add(lblMaisfeitos);
		
		JLabel lblMaiornota = new JLabel("Pedidos de maiores notas");
		lblMaiornota.setFont(new Font("Tahoma", Font.PLAIN, 20));
		lblMaiornota.setBounds(10, 175, 244, 33);
		contentPane.add(lblMaiornota);
		table_2.getColumnModel().getColumn(0).setPreferredWidth(44);
		table_2.getColumnModel().getColumn(2).setPreferredWidth(24);
		table_2.getColumnModel().getColumn(3).setPreferredWidth(204);
		table_2.getColumnModel().getColumn(4).setPreferredWidth(193);
		table_2.getColumnModel().getColumn(5).setPreferredWidth(67);
		
		ControladorProduto controlador_2 = new ControladorProduto();
		java.util.List<Produto> lista_2 = controlador_2.listar();
		
		modelo_2 = (DefaultTableModel) table_2.getModel();
		
		for(Produto pro_2 : lista_2){
			Object[] linha = new Object[] { pro_2.getTipo(), pro_2.getNome(), pro_2.getId(), pro_2.getPreco(), pro_2.getDescricao() };
			if(pro_2.getTipo().equals("formula para pegar")) modelo_2.addRow(linha);
		}

		ButtonHandler handler = new ButtonHandler();
		btnPedir.addActionListener(handler);	
		btnFechar.addActionListener(handler);
	}
	
	private class ButtonHandler implements ActionListener{

		@Override
		public void actionPerformed(ActionEvent event) {
			if(event.getSource() == btnPedir){
				for(int i=0;i<table_1.getRowCount();i++){
					boolean valor = (Boolean) table_1.getValueAt(i, 2);
					if(valor == true){
						ControladorMesa c = new ControladorMesa(10);
						if(cpf.equals("")){
							c.pedido((Integer) table_1.getValueAt(i, 0), numeroMesa);
						}else{
							c.pedidoLogado((Integer) table_1.getValueAt(i, 0), numeroMesa, cpf);
						}						
					}
				}
				
				for(int i=0;i<table_2.getRowCount();i++){
					boolean valor = (Boolean) table_2.getValueAt(i, 2);
					if(valor == true){
						ControladorMesa c = new ControladorMesa(10);
						if(cpf.equals("")){
							c.pedido((Integer) table_2.getValueAt(i, 0), numeroMesa);
						}else{
							c.pedidoLogado((Integer) table_2.getValueAt(i, 0), numeroMesa, cpf);
						}						
					}
				}
			}
			
			if(event.getSource() == btnFechar){
				doDefaultCloseAction();
			}
		}
	}
}
